Wave-pipelining is a form of logic design in which multiple bits can propagate along a single logical path without intervening flip-flops or latches. Because such a circuit does not include flip-flops or latches, it can be difficult to implement controllability and observability with respect to wave-pipelines. Traditional scan flip-flops or latches can observe their inputs and control their outputs when a pipeline only advances between these elements one clock at a time, but these devices can neither control nor observe a wave-pipeline adequately because wave-pipeline semantics are sequential rather than combinational. Diagnostic schemes that allow the entire state of the system to be saved and then later restored to resume execution are generally desirable, as they can allow all logic faults to be diagnosed, given enough points of controllability and observability.